An application programming interface (API) specifies how various software components should interact with each other. In addition to accessing databases or computer hardware, such as hard disk drives or video cards, an API can be used to ease the work of programming graphical user interface components, to allow integration of new features into existing applications (a so-called “plug-in API”), or to share data between otherwise distinct applications. In practice, many times an API comes in the form of a library that includes specifications for routines, data structures, object classes, and variables. In some other cases, notably for Simple Object Access Protocol (SOAP) and Representational State Transfer (REST) services, an API comes as a specification of remote calls exposed to the API consumers.
An enterprise (e.g., a corporation) typically releases its API to third parties such that software developers can design products that are powered by the enterprise's services or shared data. To this end, a robust API for accessing Web based software applications or Web tools has become useful for enterprises practicing business models such as Software as a Service (SaaS) and infrastructure as a service (IaaS) since a majority of customers of these enterprises require interoperability with other SaaS applications, web services, and legacy systems. Furthermore, reliable performance of APIs is important for these enterprises to maintain services and customer loyalty, and developing technologies and tools to monitor API performance metrics for the services that these enterprises use is a key step toward achieving that goal.
Technologies and tools have been developed to monitor API performance metrics for the services that enterprises use, provide, or need through the released APIs. However, these technologies and tools provide users, such as software developers, with large amounts of performance data across the entire technology stack, from the underlying Infrastructure resource metrics up through API level runtime parameters. The burden is then on the user, such as the software developer, to sift through this often voluminous performance data to pick out symptoms of potential performance bottlenecks and accordingly decides on an appropriate course of action. Although such monitoring and prompt decision making by a user are crucial from a performance perspective, they can be extremely time consuming. In addition, the quality of the result depends on the experience of the user reviewing the performance data and making decisions regarding future capacity needs.